package com.me.mysqladmin.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtil {
	/**
	 * 释放数据库连接资源
	 * @param rs	在线结果集
	 * @param stmt	SQL编译对象
	 * @param conn	数据库连接对象
	 */
	public static void free(ResultSet rs, Statement stmt, Connection conn){
		closeResultSet(rs);
		closeStatement(stmt);
		closeConnection(conn);
	}
	
	/**
	 * 释放数据库连接资源
	 * @param stmt SQL编译对象
	 * @param conn 数据库连接对象
	 */
	public static void free(Statement stmt, Connection conn){
		closeStatement(stmt);
		closeConnection(conn);
	}
	
	/**
	 * 释放数据库连接资源
	 * @param stmt SQL编译对象
	 * @param conn 数据库连接对象
	 */
	public static void free(ResultSet rs, Statement stmt){
		closeResultSet(rs);
		closeStatement(stmt);
	}
	
	/**
	 * 归还一个连接给连接池
	 * @author 周东
	 * <p>创建日期：2014 2014-11-28 下午9:55:50</p>
	 * <P>版权：©2014 me</p>
	 */
	public static void closeConnection(Connection conn){
		try {
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("释放数据库连接异常！");
		}
	}
	
	/**
	 * 释放一个Statement对象
	 * @author 周东
	 * <p>创建日期：2014 2014-11-28 下午10:11:00</p>
	 * <P>版权：©2014 me</p>
	 */
	public static void closeStatement(Statement stmt){
		try {
			if(stmt != null){
				stmt.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("释放Statement异常！");
		}
	}
	
	/**
	 * 释放一个PreparedStatement对象
	 * @author 周东
	 * <p>创建日期：2014 2014-11-28 下午10:14:36</p>
	 * <P>版权：©2014 me</p>
	 * @param pstmt
	 */
	public static void closePreparedStatement(PreparedStatement ps){
		closeStatement(ps);
	}
	
	/**
	 * 释放一个结果集对象
	 * @param rs 结果集对象
	 */
	public static void closeResultSet(ResultSet rs){
		try {
			if(rs != null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("释放结果集异常！");
		}
	}
}
